//
//  YRHomeTableViewController.swift
//  新浪微博
//
//  Created by Viper on 16/6/24.
//  Copyright © 2016年 Viper. All rights reserved.
//

import UIKit
import AFNetworking
//cell可重用表示符
private let statusCell = "statusCell"
class YRHomeTableViewController: YRVisitorTableViewController {
    //创建UIRefreshControl
    let refresh = YRRefresh()
    
    var status : [YRStauts] = [YRStauts]()
    
    //保存微博数据的数组
    
    var statusArray : [YRStauts] = [YRStauts]()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        /*
         
         判断用户是否登录  --未登录设置访客视图信息
         
         */
        
        if !isLogin {
            
            visitorView?.setupVisitonViewInfo(nil, title: nil)
            //不加return会崩 因为后面为nil 不能请求数据
            return
        }
        
        setupTableViewInfo()
        
        //loadData
        //请求微博首页数据
        
       loadStatusData(activityView.isAnimating())
    }
    // 设置tableView相关属性
    func setupTableViewInfo(){
        
        //获取class 通过类名.self
        tableView.registerClass(YRStatusCell.self, forCellReuseIdentifier: statusCell)
        
        //UITableViewAutomaticDimension -->自动计算行高
        tableView.rowHeight = UITableViewAutomaticDimension
        //预估行高(预估行高越接近真实越好)
        tableView.estimatedRowHeight = 200
        //设置分割线的样式
        tableView.separatorStyle = .None
        //设置FooterView
        tableView.tableFooterView = activityView
        //添加事件
     refresh.addTarget(self, action: #selector(YRHomeTableViewController.refreshAction), forControlEvents: UIControlEvents.ValueChanged)
        
       tableView.addSubview(refresh)
    }
    //监听事件
    @objc private func refreshAction(){
        
        loadStatusData(activityView.isAnimating())
//        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (Int64)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), {
//    
//            //结束刷新
//           self.refresh.endRefreshing()
//});
        
    }
   //MARK: - 懒加载控件
    private lazy var activityView : UIActivityIndicatorView = {
        
        let view = UIActivityIndicatorView(activityIndicatorStyle:UIActivityIndicatorViewStyle.WhiteLarge )
        
        view.color = ThemeColor
        
        return view
        
    }()
    
    

}
 //MARK: - 请求首页数据
extension YRHomeTableViewController{
   
    func loadStatusData(pullUp:Bool){
        
        //如果sinceId = 0 且max_Id = 0 系统默认相当于只传accessToken
        //如果下拉刷新Max_Id= 0 代表要拿时间最新的微博
        //如果上拉加载更多 Since_Id代表要拿更早时间的微博
        //pullUp 上拉--> true
        var sinceId : Int64 = 0
        var maxId : Int64 = 0
        
        //上拉加载更多
        if pullUp {
            
            maxId = statusArray.last?.id ?? 0
            //则返回ID小于或者等于max_id的微博
            if maxId > 0 {
                maxId -= 1
            }
            
        }else{
            //下拉刷新
            sinceId = statusArray.first?.id ?? 0
            
        }
        
        
        
        YRNetwoekTools.sharedTools.homeLoadStatusData(sinceId, maxId: maxId, success: { (response) in
            //动画
            self.endRefreshing()
           
            //判断我们请求回来的数据是否有值 是否是一个数组
            guard let res = response?["statuses"] as?[[String : AnyObject]]else{
                
                print("返回数据为nil 或者类型不匹配")
                return
            }
            var tempArray : [YRStauts] = [YRStauts]()
            
            for dict in res{
                
                let stauts = YRStauts(dict: dict)
                
                tempArray.append(stauts)
            }
            
            //            self.status = tempArray
            //            print(tempArray[0].user?.name)
            
//            self.statusArray = tempArray
            //上拉加载更多->10.9.8.7.6. 5.4.3.2.1顺序 可选值不能直接参与运算
            if pullUp {
                
                self.statusArray = self.statusArray + tempArray
            }else{
                //下拉刷新
                self.statusArray = tempArray + self.statusArray
                
            }
            //刷新UI
            self.tableView.reloadData()
            
            }) { (error) in
                  print("失败\(error)")
        }
        
        
    }
    //结束动画
    func endRefreshing(){
        
        //停止动画
        self.activityView.stopAnimating()
        self.refresh.endRefreshing()
    }


}
extension YRHomeTableViewController{
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        return statusArray.count
        
    }
   
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        //创建cell
        let cell = tableView.dequeueReusableCellWithIdentifier(statusCell, forIndexPath: indexPath) as! YRStatusCell

        //给cell赋值
        cell.status = statusArray[indexPath.row]
        
        
        return cell
    }
    
    override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        //如果cell滚动到最后一个而且activityView没有开启动画
        if statusArray.count == indexPath.row+1 && !activityView.isAnimating(){
            
            //开启动画
            activityView.startAnimating()

            //请求数据
            loadStatusData(activityView.isAnimating())
            
//            print(indexPath.row)
        }
        
    }
   
}
